<?php
namespace Admin\Model;
use Think\Model;
class CategoryModel extends Model {

	protected $_validate = array(
		array('cate_name','require','栏目名称必填！',1,regex,3), //默认情况下用正则进行验证
	);
    
	public function catetree(){             //形成层级关系的方法
		$data=$this->select();
		return $this->resort($data);        //调用resort方法获取层级顺序
	
	}

//递归	
	public function resort($data,$parentid=0,$level=0){
		static $ret=array();
		foreach($data as $k=>$v){
			if($v['parentid']==$parentid){  //如果为顶级
				$v['level']=$level;         //也为初始
				$ret[]=$v;                  //数组输出所有数据
				$this->resort($data,$v['cate_id'],$level+1); //递归将此时的id回调到函数当做父id
			}
		}
		return $ret;
	}


public function childrenid($cateid){              //输出所有子id的方法
	$data=$this->select();
	return $this->getchildrenid($data,$cateid);    //$cateid作为getchildrenid函数里的第二个参数$parentid
}	
//递归	
public function getchildrenid($data,$parentid){      //获取所有子id的方法
	static $ret=array();
	foreach($data as $k=>$v){
		if($v['parentid']==$parentid){          //若获取的此id的父id等于参数$parentid
			$ret[]=$v['cate_id'];               //则数组输出此cate_id
			$this->getchildrenid($data,$v['cate_id']);   //递归将此时的id回调到函数当做参数$parentid
		}
	}	
	return $ret;
}
	
//删除之前的操作
 public function _before_delete($options){
	
	if(is_array($options['where']['cate_id'])){             // 如果是数组，即为批量
		$arr=explode(',',$options['where']['cate_id'][1]);	 //把字符串打散为数组
		$soncates=array();                       
		foreach($arr as $k=>$v){
			$soncates2=$this->childrenid($v);                //获取所有的子id
			$soncates=array_merge($soncates,$soncates2);   //2个数组合并	
		}
		$soncates=array_unique($soncates);  //去重
		$soncates=implode(',',$soncates);  //将数组输出为字符串
		if($soncates){
			$this->execute("delete from ar_category where cate_id in ($soncates)"); //sql执行删除
		}
	
	}else{     //单个删除
		$childrenids=$this->childrenid($options['where']['cate_id']);  //获取id
		$childrenids=implode(',',$childrenids);                        //把数组元素组合为字符串
		if($childrenids){
			$this->execute("delete from ar_category where cate_id in ($childrenids)");
		}
	}
 
 }	
	
	
	
	
	
	
	
	
	
	
	





}